﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Concurrent;
using System.Reflection;

namespace Petaframe.DataAccess
{

    /// <summary>
    /// Her tablo için oluşturulan <see cref="TableInfo"/> sınıfını önbelleğe alır. Thead safe olduğu için sorunsuzca multi thread ortamlarda kullanılabilir.
    /// </summary>
    //internal sealed class TableInfoCache 
    //{
     
    //    private static readonly Lazy<TableInfoCache> lazy = new Lazy<TableInfoCache>(() => new TableInfoCache());

    //     public static  TableInfoCache Instance { get { return lazy.Value; } }

    //     private TableInfoCache() { }
     
    //     private readonly ConcurrentDictionary<Type, TableInfo> cache = new ConcurrentDictionary<Type, TableInfo>();

    //     public TableInfo GetTableInfo(Type entity, IParameterBuilder _pb, IEscapeSqlIdentifier _es)
    //     {
    //          TableInfo _info;

    //        if (!cache.TryGetValue(entity, out _info))
    //         {
    //             TableInfo ti =new ClassDecomposer().ForType(entity, _pb, _es);                
    //             cache.TryAdd(entity,ti );
    //         }
    //          return _info;
    //     }
    //}
}
